|
In computing, a basic block is a straight-line code sequence with no branches in except to the entry and no branches out except at the exit.〔Hennessy, John L., and David A. Patterson. Computer architecture: a quantitative approach. Elsevier, 2011.〕 This restricted form makes a basic block highly amenable to analysis.〔("Control Flow Analysis" by Frances E. Allen )〕 Compilers usually decompose programs into their basic blocks as a first step in the analysis process. Basic blocks form the vertices or nodes in a control flow graph. ==Definition== The code in a basic block has: * One entry point, meaning no code within it is the destination of a jump instruction anywhere in the program. * One exit point, meaning only the last instruction can cause the program to begin executing code in a different basic block. Under these circumstances, whenever the first instruction in a basic block is executed, the rest of the instructions are necessarily executed exactly once, in order.〔("Global Common Subexpression Elimination" by John Cocke )〕 The code may be source code, assembly code or some other sequence of instructions. More formally, a sequence of instructions forms a basic block if: * The instruction in each position dominates, or always executes before, all those in later positions. * No other instruction executes between two instructions in the sequence. This definition is more general than the intuitive one in some ways. For example, it allows unconditional jumps to labels not targeted by other jumps. This definition embodies the properties that make basic blocks easy to work with when constructing an algorithm. The blocks to which control may transfer after reaching the end of a block are called that block's ''successors'', while the blocks from which control may have come when entering a block are called that block's ''predecessors''. The start of a basic block may be jumped to from more than one location. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Basic block」の詳細全文を読む スポンサード リンク
|